SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[paChequearReubicacionDeAgente]
@idCola int,
@Estado INT OUTPUT,
@Diagnostico VARCHAR(1000) OUTPUT
AS
SET NOCOUNT ON
DECLARE @Fecha1 DATETIME 
DECLARE @Fecha2 DATETIME
DECLARE @idPlaza INT
DECLARE @SubServicio INT
DECLARE @TipoDePaquete INT
DECLARE @FAltaPlaza DATETIME
DECLARE @FBajaPlaza DATETIME
DECLARE @Destino INT
DECLARE @Baja VARCHAR(1)
DECLARE @error INT
DECLARE @cod INT
DECLARE @RegimenSalarialOrigen INT
DECLARE @RegimenSalarialDestino INT
DECLARE @CargoSalarialOrigen INT
DECLARE @CargoSalarialDestino INT 
DECLARE @HorasOrigen INT
DECLARE @HorasDestino INT

SELECT @cod = 0
SELECT @error = 0
SELECT @Diagnostico = '1'

SELECT @Fecha1 = Fecha1, @Fecha2 = Fecha2 FROM tb_ColaDeMovimientos WHERE idCola = @idCola
SELECT @Destino = PlazaDestino, @SubServicio = Servicio, @idPlaza = idPlaza FROM tb_PlazasDeMovimiento WHERE idCola = @idCola
SELECT @TipoDePaquete = TipoPaquete FROM tb_Plazas INNER JOIN tb_PaquetesDePlazas ON idPaquete = Paquete AND idPlaza = @idPlaza

SELECT @RegimenSalarialOrigen = RegimenSalarial, @CargoSalarialOrigen = CargoSalarialDefault, @HorasOrigen = Horas FROM tb_Plazas WHERE IdPlaza = @IdPlaza
SELECT @RegimenSalarialDestino = RegimenSalarial, @CargoSalarialDestino = CargoSalarialDefault, @HorasDestino = Horas FROM tb_Plazas WHERE IdPlaza = @Destino

IF @RegimenSalarialOrigen <> @RegimenSalarialDestino
BEGIN
	Select @cod = 3, @Diagnostico = @Diagnostico + '*' + 'Las plazas Origen y Destino tienen distinto REGIMEN SALARIAL'
END

IF @RegimenSalarialOrigen = @RegimenSalarialDestino AND (@RegimenSalarialOrigen = 12 AND @CargoSalarialOrigen <> @CargoSalarialDestino)
BEGIN
	Select @cod = 3, @Diagnostico = @Diagnostico + '*' + 'Las plazas Origen y Destino tienen distinto CARGO SALARIAL'
END

IF @RegimenSalarialOrigen = @RegimenSalarialDestino AND (@RegimenSalarialOrigen = 13 AND @HorasOrigen <> @HorasDestino)
BEGIN
	Select @cod = 3, @Diagnostico = @Diagnostico + '*' + 'Las plazas Origen y Destino tienen distinta cantidad de HORAS'
END


--print convert(varchar, @destino)

--No se puede reubicar PLAZAS PAQUETE del tipo HORAS POR CARGO
if @TipoDePaquete is not null and @TipoDePaquete = 3
begin
	Select @cod = 3, @Diagnostico = @Diagnostico + '*' + 'No se puede realizar el movimiento de reubicacion sobre PLAZAS CABECERAS del tipo HORAS POR CARGO'
end

-- Verifico si la plaza destino se encuantra ocupada para este periodo de tiempo por un titular o un interino
--if exists(SELECT * from tb_SubServiciosAgentes ss, tb_ServiciosAgentes s where Plaza = @Destino and 
--	((ss.baja = 'N' and ss.FechaAlta < @Fecha1) or (ss.baja='S' and ss.fechaAlta < @Fecha1 and ss.FechaBaja >=@Fecha1)) 
--	and (SituacionRevista = 1 or SituacionRevista = 2) and idServicioAgente = ServicioAgente)



---------********************* SE SACA EL CONTROL PORQUE NUNCA SE PODRIA REUBICAR
IF EXISTS (SELECT top 1  IdServicioAgente FROM tb_ServiciosAgentes S INNER JOIN tb_SubServiciosAgentes SS ON S.IdServicioAgente = SS.ServicioAgente
	WHERE Plaza = @Destino AND ( (S.FechaBaja IS NULL) OR (S.FechaBaja IS NOT NULL AND S.FechaBaja >= @Fecha1)))
BEGIN
		SELECT @cod=1,@Diagnostico = @Diagnostico+'*'+'Recuerde que deberá Reubicar al Agente que ocupa la plaza Destino.'
END

-- Verifico si hay un agente ocupando la plaza con situacion laboral normal
--if exists(Select * from tb_SubServiciosAgentes where Plaza = @Destino and ((baja = 'N' and FechaBaja > @Fecha1) or (baja='S' and FechaAlta < @Fecha1)) 
--	and SituacionLaboral = 5)
--	begin
--		Select @cod=2,@Diagnostico = @Diagnostico+'*'+'La Plaza Destino se encuantra ocupada por un docente con situacion laboral NORMAL'
--	end

-- Verifico si la plaza destino no esta dada de baja
--if exists(Select * from tb_Plazas where idPlaza = @Destino))

update tb_ColaDeMovimientos set estado = @cod where idCola = @idCola

--select @diagnostico as diagnostico

SET @Estado = @Cod
GO
GRANT EXECUTE ON  [dbo].[paChequearReubicacionDeAgente] TO [CentroDeDesignaciones]
GRANT EXECUTE ON  [dbo].[paChequearReubicacionDeAgente] TO [GestionInstitucional]
GRANT EXECUTE ON  [dbo].[paChequearReubicacionDeAgente] TO [PersonalDocente]
GO
